package com.bt.lms.ui.page.sys.user;

import com.bt.lms.entity.User;
import com.bt.lms.entity.page.Page;
import com.bt.lms.ui.page.common.PageLocation;
import com.bt.lms.main.BotLmsApp;
import com.bt.lms.ui.page.sys.page.paging.PagePagingQuery;
import com.bt.lms.ui.page.sys.utils.MyButton;
import com.bt.lms.ui.page.sys.style.BtnStyle;
import com.bt.lms.ui.vo.PageSkipInfo;
import com.bt.lms.ui.page.sys.user.action.*;
import com.bt.lms.ui.page.sys.utils.MyVBox;
import javafx.collections.ObservableList;
import javafx.geometry.Insets;
import javafx.scene.Node;
import javafx.scene.layout.*;

/**
 * 用户列表界面
 */
public class PageList extends VBox {

    /**
     * 界面跳转数据
     */
    private final PageSkipInfo pageSkipInfo;

    /**
     * 构建用户列表界面（真实数据）
     *
     * @param pageSkipInfo 界面跳转信息
     * @param page    分页模型
     */
    public PageList(PageSkipInfo pageSkipInfo, Page<User> page) {
        //自己可能用的东西
        this.setId("PageList");
        this.pageSkipInfo = pageSkipInfo;

        //大小
        int wight = BotLmsApp.PER_WIGHT;
        this.setPrefWidth(wight);

        //布局
        Insets insets = new Insets(0);
        this.setPadding(insets);

        //组件
        //定位区域
        PageLocation pageLocation = new PageLocation("系统管理", "后台用户管理");

        //列表区域
        MyVBox listVBox = new MyVBox();
        operateBtnInit(listVBox);
        UserTableView userTableView = new UserTableView(listVBox, page,pageSkipInfo);
        listVBox.getChildren().add(userTableView);

        //搜索区域（页码）
        PagePagingQuery pagePaging = new PagePagingQuery(pageSkipInfo, page,User.class);

        //添加组件
        ObservableList<Node> children = this.getChildren();
        children.addAll(pageLocation, listVBox, pagePaging);
    }

    /**
     * 列表区域的操作按钮初始化
     *
     * @param listVBox 列表盒子
     */
    private void operateBtnInit(MyVBox listVBox) {

        //组件(操作按钮)
        MyButton addUserBtn = new MyButton("新增后台用户");
        //事件
        ULAddUserBtnAction ULAddUserBtnAction = new ULAddUserBtnAction(pageSkipInfo);
        addUserBtn.setOnAction(ULAddUserBtnAction);
        //样式 + 样式事件
        BtnStyle.addBtn(addUserBtn);
        BtnStyle.addBtnAction(addUserBtn);

        //按钮内部布局
        Insets addUserBtnInsets = new Insets(5, 12, 5, 12);
        addUserBtn.setPadding(addUserBtnInsets);
        //操作按钮盒子（让操作按钮有间隔）
        HBox addUserBtnBox = new HBox();
        //操作按钮盒子布局
        Insets addUserBtnBoxInsets = new Insets(10);
        addUserBtnBox.setPadding(addUserBtnBoxInsets);
        //盒子内添加按钮
        addUserBtnBox.getChildren().add(addUserBtn);
        //添加到列表容器
        ObservableList<Node> addUserChildren = listVBox.getChildren();
        addUserChildren.add(addUserBtnBox);
    }
}
